<?php

class CierreCajasController extends AppController {
    var $name = 'CierreCajas';
    var $uses = array('Punto', 'TiendaLocal','Documento');
    var $components = array('Utilitario','Interfaz','Vista','Maestro', 'Util');
    var $helpers = array('Html','Ajax','Javascript','Vista','Interfaz');
    var $layout = "ajax";

    function beforeFilter(){
        //$this->validar(); //Deshabilitado para enviar pdf de cierre de caja por wget
    }
    
    function index($busq = null) {
        $this->permisos_menu_individual('CIERRES DE CAJAS');
    }
    
    public function excel() {
        $this->TiendaLocal->virtualFields['nombrecompleto'] = 'TiendaLocal.codigo || \'-\' || TiendaLocal.nombre';
        $listaTiendas = $this->TiendaLocal->find('list', array('fields' => array('id', 'nombrecompleto'), 'conditions' => array('TiendaLocal.id >' => '0', 'TiendaLocal.estatus' => 1), 'order' => 'TiendaLocal.id'));
        $this->set('listaTiendas', $listaTiendas);
        $tipos=array('1'=>'Correlativo General','2'=>'Correlativo Individual');
        $this->set('tipos', $tipos);
    }

    public function listado_puntos() {
        $this->permisos_menu_individual('CIERRES DE CAJAS');
        extract($this->request->data);

        if(!empty($desde) and !empty($hasta) and !empty($tiendas)) {

            list($diaD, $mesD, $anioD) = explode('-', $desde);
            list($diaH, $mesH, $anioH) = explode('-', $hasta);

            $error = '';

            $desde = implode('-', array_reverse(explode('-', $desde)));
            $hasta = implode('-', array_reverse(explode('-', $hasta)));

            if(!checkdate($mesD, $diaD, $anioD)) {
                $error = 'Introduzca una fecha de inicio valida';
            }

            if(!checkdate($mesH, $diaH, $anioH)) {
                $error = 'Introduzca una fecha de fin valida';
            }

            if(mktime(0,0,0, $mesD, $diaD, $anioD) > mktime(0,0,0, $mesH, $diaH, $anioH)) {
                $error = 'La fecha de inicio no puede ser mayor a la fecha tope';
            }

            if($error == '') {

                $puntos = array();

                foreach ($tiendas as $idTienda) {

                    $this->TiendaLocal->virtualFields['nombrecompleto'] = 'TiendaLocal.codigo || \'-\' || TiendaLocal.nombre';
                    $listaTiendas = $this->TiendaLocal->find('first', array('fields' => array('id', 'nombrecompleto', 'base_datos'), 'conditions' => array('TiendaLocal.id' => $idTienda, 'TiendaLocal.estatus' => 1), 'order' => 'TiendaLocal.codigo'));

                    unset($listaTiendas['TiendaLocal']['id']);
                    $listaTiendasTemp = $listaTiendas['TiendaLocal'];
                    $arregloTiendas[$idTienda] = $listaTiendasTemp;

                    $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $arregloTiendas[$idTienda]['base_datos']);
                    $puntosTemp = $ObjPunto->find('all', array('fields' => array('id', 'codigo', 'tienda_id'), 'order' => 'Punto.codigo'));

                    foreach ($puntosTemp as $elPunto) {

                        $puntos[] = $elPunto['Punto'];
                    }
                }
                
                $this->Vista->cerrar_ventana($vent_filtro);

                $this->set('arregloTiendas', $arregloTiendas);
                $this->set('puntos', $puntos);
                $this->set('busq', '');
                $this->set('desde', $desde);
                $this->set('hasta', $hasta);
                $this->set('tiendas', $tiendas);
            }
            else {
                $this->Vista->mensaje($error, 'Error');
                $this->render('index');
            }
        }
        else {
            $this->Vista->mensaje('Debe indicar todos los datos para continuar!', 'Error');
            $this->render('index');
        }

    }

    public function pdf_punto($valores, $des = "si" /*$idPunto = null, $idTienda = null, $desde = null, $hasta = null, $tipo = 'vista'*/) {
            if ($valores != null){
                $valAr = explode('_._', $valores);
                if($des == "no"){
                    $this->permisos_menu_individual('CIERRES DE CAJAS');
                    $this->permisos_opcion_individual('CIERRES DE CAJAS', 'ESTATUS', 'GENERAR PDF');
                    $idPunto = $this->Interfaz->id($valAr['0']);
                    $idTienda = $this->Interfaz->id($valAr['1']);
                    $desde = $valAr['2'];
                    $hasta = $valAr['3'];
                    $tipo = $valAr['4'];
                }else{
                    $c_tie = str_replace('tienda_-_', '', $valAr['0']);
                    $c_cla = str_replace('clave_-_', '', $valAr['1']);
                    $c_ip = str_replace('ip_-_', '', $valAr['2']);
                    $idPunto = str_replace('punto_-_', '', $valAr['3']);
                    $desde = str_replace('desde_-_', '', $valAr['4']);
                    $hasta = str_replace('hasta_-_', '', $valAr['5']);
                    $tipo = str_replace('tipo_-_', '', $valAr['6']);
                    $idTienda = $this->Tienda->find('first', array('fields' => 'id', 'conditions' => array('codigo' => $c_tie)));
                    $idTienda = $idTienda['Tienda']['id'];
                }

            //if(!empty($idPunto) and !empty($idTienda) and !empty($desde) and !empty($hasta)) {

            //$idPunto = $this->Interfaz->id($idPunto);
            //$idTienda = $this->Interfaz->id($idTienda);

            $desde = implode('-', array_reverse(explode('-', $desde)));
            $hasta = implode('-', array_reverse(explode('-', $hasta)));

            $this->TiendaLocal->virtualFields['nombrecompleto'] = 'TiendaLocal.codigo || \'-\' || TiendaLocal.nombre';
            $listaTiendas = $this->TiendaLocal->find('first', array('fields' => array('id', 'nombrecompleto', 'base_datos'), 'conditions' => array('TiendaLocal.id' => $idTienda, 'TiendaLocal.estatus' => 1), 'order' => 'TiendaLocal.codigo'));

            $ObjPunto = $this->Maestro->modelo('punto', 'Punto', $listaTiendas['TiendaLocal']['base_datos']);

            //$data = $ObjPunto->query("SELECT * FROM fnc_reporte_cierre_caja('general','$desde','$hasta', 0, $idPunto) AS (tipo text,fecha date,condicion text,documento text,rif text,nombre text,total double precision,referencia text,forma_pago text,contado double precision,credito double precision,retenido text)");
            
            //$data = $ObjPunto->query("SELECT * FROM fnc_reporte_cierre_caja('caja','$desde','$hasta', 0, $idPunto) AS (tipo text,fecha date,condicion text,documento text,rif text,nombre text,total double precision,referencia text,forma_pago text,contado double precision,credito double precision,retenido text, usuario text)");
            
            //$idPunto = 0;

            if($idPunto == 0) {
                $vacio = '';
                $caja = 'todo';
            } else {
                $vacio = "AND punto_id=$idPunto";
                $caja = 'caja';
            }

            $data = $ObjPunto->query("((SELECT * FROM fnc_reporte_cierre_caja('$caja','$desde','$hasta', 0, $idPunto)
                AS (tipo text,fecha date,condicion text,documento text,rif text,nombre text,total double precision
                ,referencia text,forma_pago text,contado double precision,credito double precision,retenido text, usuario text)
                )
                  UNION
                (select '1'::text,n.modificado::date,'ANULADANCR'::text,n.numero::TEXT,'----'::TEXT,'----'::TEXT,(n.monto*-1)::double precision
                ,n.doc_referencia,'EFECTIVO (NCR)',(n.monto*-1)::double precision,'0'::double precision,'0'::text,'----' ::text
                from nota_creditos n WHERE estatus=3 AND (fecha>='$desde' AND fecha<='$hasta') $vacio)) order by 1,9");

            if(!empty($data)) {
                //pr($data);

                $this->set('data', $data);
                $this->set('desde', $desde);
                $this->set('hasta', $hasta);

                $this->set('nombreTienda', $listaTiendas['TiendaLocal']['nombrecompleto']);
                $this->set('idPunto', $idPunto);
                $this->set('idTienda', $idTienda);
                $this->set('desde', $desde);
                $this->set('hasta', $hasta);
                $this->set('tipo', $tipo);
            }
            else {
                $this->Vista->mensaje('No hay informacion para mostrar!', 'Error');
                $this->render('index');
            }

        }
        else {
            $this->Vista->mensaje('Ha surgido un error inesperado!', 'Error');
            $this->render("../" . PRINCIPAL . "/mensajes");
        }
    }

    public function filtro() {
        $this->permisos_accion_individual('CIERRES DE CAJAS', 'FILTRO');
        $tiendas = $this->Session->read('tiendas_disponibles');
        $listaTiendas = $this->Maestro->listar_tienda_usuarios($tiendas);

        $listaTiendas = $this->Util->tiendasActivas($listaTiendas); 
        $this->set('listaTiendas', $listaTiendas);
    }
}
?>
